package god;

public class J11Exception {
	public static void main(String[] args) {
		// 프로그램이 오류가 발생하더라도 끝까지 실행이 되어 정상 종료 되어아햠 (신뢰성 문제)
		// 100을 10으로 나누면 끝까지 실행이 되는데
		// 0으로 나누면 보이냐? 만 출력되고 오류 메시지 출력되고 끝남
		
/*		System.out.println("보이냐?");
		System.out.println( 100/0);          오류
		System.out.println("이거도?");
		
		int i[] = new int[10];
		for (int j = 1; j <= 10; ++j) {
			System.out.println( i[j] );         오류
		}*/
		
/*		System.out.println("보이냐?");
		try{
			System.out.println( 100/0);
		} catch(ArithmeticException ae) {								// ArithmeticException 을 catch(잡으려고) try(노력한다)
			ae.printStackTrace();                                                // 많이 사용함
			System.out.println("0으로 나누면 안돼");
		}
		System.out.println("이거도?");
		
		int i[] = new int[10];
		for (int j = 1; j <= 10; ++j) {
			try {
			System.out.println( i[j] );
			} catch (ArrayIndexOutOfBoundsException arraybe) {
				arraybe.printStackTrace();
				System.out.println("배열은 0으로 시작해");
			}
		}
		
		// 다중 try-carch문 사용
		try {
			System.out.println( 100 / 0);
			System.out.println( i[100] );
		}catch(ArithmeticException ae) {
			System.out.println("0으로 나누면 안됩니다.");
		}catch(ArrayIndexOutOfBoundsException aiobe) {
			System.out.println("배열 인덱스 초과");
		}
		
		// 모든 예외의 조상 - Exceoption
		
		try {
			System.out.println( 100 / 0);
			System.out.println( i[100] );
		}catch(Exception ex) {
			ex.printStackTrace(); 										// 오류 상세정보 출력
			System.out.println("오류가 발생했습니다.");
		}*/
		
		int intArray[] = new int[10];
		for (int k = 0; k <= intArray.length; ++k) {
			intArray[k] = k;
			try {
				System.out.println("intArray[" + k + "]" +  "=" + intArray[k]);
			} catch (ArrayIndexOutOfBoundsException aoibe) {
				aoibe.printStackTrace();
				//System.out.println("배열 인덱스 초과");
			}
		}
		
	}

}
